# -*- coding: utf-8 -*-

"""
Description: 提取商品数据工具函数
"""
from bs4 import BeautifulSoup
from typing import List, Dict


def extract_search_detail(html_content: str) -> List[Dict]:
    """
    从HTML内容中提取商品数据

    Args:
        html_content (str): HTML内容字符串

    Returns:
        List[Dict]: 商品数据列表，每个商品包含以下信息：
            - procode: 商品货号
            - name: 商品名称
            - url: 商品详情页链接
            - price_range: 价格范围
            - category: 商品类别
            - citations: 引用次数
            - datasheet_url: 说明书下载链接
            - available_skus: 在售SKU列表

    """
    soup = BeautifulSoup(html_content, "html.parser")
    products = []
    # 查找所有包含 tablet-2-col 的元素
    ul_div = soup.find(class_="tablet-2-col")
    # 查找所有商品列表项
    product_items = ul_div.find_all("li", class_="entry")

    for item in product_items:
        product_data = {}

        # 提取SKU和引用次数
        sku_citation = item.find(
            "li", style="display:flex;justify-content:space-between;"
        )
        if sku_citation:
            product_data["procode"] = sku_citation.find(
                "span", class_="mufeng-spsku"
            ).text.strip()

        # 提取商品类别
        category = item.find("li", class_="category")
        if category:
            product_data["category"] = category.find("a").text.strip()

        # 提取商品名称
        title = item.find("li", class_="title")
        if title:
            product_data["name"] = title.find("a").text.strip()
            product_data["url"] = title.find("a")["href"]

        # 提取价格范围
        price_wrap = item.find("li", class_="price-wrap")
        if price_wrap:
            product_data["price_range"] = price_wrap.find(
                "span", class_="price"
            ).text.strip()

        # 提取说明书下载链接
        datasheet = item.find("a", href=lambda x: x and x.endswith(".pdf"))
        if datasheet:
            product_data["datasheet_url"] = datasheet["href"]

        # 提取在售SKU
        available_skus = item.find("p", class_="mufeng-ah")
        if available_skus:
            product_data["available_skus"] = available_skus.text.replace(
                "在售SKU:", ""
            ).strip()

        products.append(product_data)

    return products


def extract_product_detail(html_content: str) -> str:
    """提取商品详情

    Args:
        html_content (str): 商品详情页HTML内容

    Returns:
        str: 商品详情
    """
    soup = BeautifulSoup(html_content, "html.parser")
    product_detail = soup.find(class_="default-description")
    return str(product_detail)
